-
Notifications
You must be signed in to change notification settings - Fork 127
8367244: [lworld] C2 compilation fails with assert "no node with a side effect" #1716
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
👋 Welcome back mhaessig! A progress list of the required criteria for merging this PR into |
|
@mhaessig This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 6 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. As you do not have Committer status in this project an existing Committer must agree to sponsor your change. Possible candidates are the reviewers of this PR (@chhagedorn) but any other Committer may sponsor as well. ➡️ To flag this PR as ready for integration with the above commit message, type |
Webrevs
|
chhagedorn
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks reasonable to me, thanks for fixing this!
| * compiler.valhalla.inlinetypes.TestAcmpStressUnstableIf | ||
| * @run main/othervm -Xbatch -XX:-TieredCompilation | ||
| * -XX:CompileCommand=compileonly,compiler/valhalla/inlinetypes/TestAcmpStressUnstableIf.test | ||
| * -XX:+UnlockDiagnosticVMOptions -XX:+StressUnstableIfTraps -XX:RepeatCompilation=100 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given that the test will be run over and over again, I think we can remove RepeatCompilation to improve test execution time.
|
Thank you for having a look, @chhagedorn. I removed the repeated compilation. |
|
/integrate |
|
/sponsor |
|
Going to push as commit a0ec244.
Your commit was automatically rebased without conflicts. |
|
@chhagedorn @mhaessig Pushed as commit a0ec244. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Problem Analysis
The stress test
compiler/valhalla/inlinetypes/TestAcmpWithUnstableIf.java, which uses theStressUnstableIfTrapflag, failed intermittently with the assert "no node with a side effect" during C2 compilation. I tracked down the origin of the failure to the raw store of the unstable if trap stress counter that was missing a memory edge to the backedge phi and thus had no side effect in the loop, which lead to the aforementioned assert. During parsing, the missing memory edge gets discarded with as vestigial parsing state whendo_if()ends upstopped(). However, the effect of the stress counter should still be wired back into the backedge since it will be incremented in the next iteration.Patch Description
To prevent the stress counters memory state being lost to
PreserveJVMState, I pass it to the caller over an out-parameter andset_memorywith that node, similar to what is already done for control. This is only necessary for the two last invocation ofdo_if()indo_acmp()where they are actually allowed to trap. Further, this PR reenablesStressUnstableIfTrapincompiler/valhalla/inlinetypes/TestAcmpWithUnstableIf.java.Testing
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/valhalla.git pull/1716/head:pull/1716$ git checkout pull/1716Update a local copy of the PR:
$ git checkout pull/1716$ git pull https://git.openjdk.org/valhalla.git pull/1716/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 1716View PR using the GUI difftool:
$ git pr show -t 1716Using diff file
Download this PR as a diff file:
https://git.openjdk.org/valhalla/pull/1716.diff
Using Webrev
Link to Webrev Comment